/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：UICompositeFileBox.js<br>
 * 日期：2016年8月8日<br>
 * 作者: 杜劝劝<br>
 * 功能：FileBox组件<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");


/**
 * 类型名称：Rainier.UI.V2.UICompositefilebox<br>
 * 类型功能：声明文件输入框组件<br>
 * 接口函数：<br>
 * 成员变量：<br>
 */
Rainier.UI.V2.UICompositeFileBox = Rainier.UI.V2.UIComposite.extend({
	
	NAME : "Rainier.UI.V2.UICompositeFileBox",
	
	/**
	 * 函数名称Rainier.UI.V2.UICompositeFileBox.init<br>
	 * 函数功能：构造函数<br>
	 * 参数输入：objParentComposite	:  	父组件实例 一般为对应的panel或者layout中添加<br>
	 * 参数输入：objProperties		 	:	
	 * {
	 * 		required 			: true,			//是否需要校验
	 * 		validType			: 'email',		//校验类型
	 * 		missingMessage		: '',			//未填写时弹出的信息
	 * 		tipPosition			: '',			//tipTool的位置
	 * 		editable			: true/false	//
	 * 		//textbox的属性
	 * 		width 				: '',			//设置文本框宽度
	 * 		height				: '',			//设置文本框高度
	 * 		type				: 'password',	//设置文本框类型
	 * 		label				: '',			//为文本框绑定说明文字
	 * 		//fileBox属性
	 *	 	buttonText: 'Choose File',			//为文本组件添加说明
     *		buttonAlign: 'left'					//设置文本按钮显示的位置
	 * }
	 * 注：具体参数信息参照easyUI官网该组件Properties和其父类textBox组件的属性Properties。<br>	
	 * 异常信息：无<br>
	 */
	init : function(objParentComposite,objProperties){
		//使用父类初始化子类对象
		this._super(objParentComposite,objProperties);
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.appendEventHandler<br>
	 * 函数功能：添加事件代理<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：<br>
	 */
	appendEventHandler : function(){		
		this.m_aEventList = ['onChange',
							 'onResize',
							 'onClickButton',
							 'onClickIcon',
							 'onBeforeValidate',
							 'onValidate'];
		this._super();
	},
	
	
	
	
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.createComposite<br>
	 * 函数功能：创建组件<br>
	 * 参数输入：eleParent : 父组件的节点元素<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	createComposite : function(eleParent){
		this._super(eleParent);		
		var newEle = this.CreateElement("div",this.m_objProperties.id);
		eleParent.append(newEle);
		newEle.filebox(this.m_objProperties);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.callUiMethod<br>
	 * 函数功能：添加事件代理<br>
	 * 参数输入：sMethod : 方法名称
	 * 参数输入：objArgs : 更具方法名称，在该类方法中查找对应参数，或easyUI官网对应组件的方法中检索
	 * 函数返回：根据调用方法，返回相应的数值<br>
	 * 异常信息：<br>
	 */
	callUiMethod : function(sMethod,objArgs){
		return this.getElement().filebox(sMethod,objArgs);
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.options<br>
	 * 函数功能：返回选择的对象<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：返回选择的对象<br>
	 * 异常信息：无<br>
	 */
	options : function(){
		return this.getElement().filebox('options');
	},

	getFiles : function(){
		var fileComponent = this.getElement().next().find('input[id^="filebox_file_id_"]').get(0);
		var files = fileComponent.files;
		return files;
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.textbox<br>
	 * 函数功能：获取当前文本框对象<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：当前文本框对象<br>
	 * 异常信息：无<br>
	 */
	textbox : function(){
	    return this.getElement().filebox('textbox');
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.button<br>
	 * 函数功能：获取当前按钮对象<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：当前按钮对象<br>
	 * 异常信息：无<br>
	 */
	button : function(){
	    return this.getElement().filebox('button');
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.destroy<br>
	 * 函数功能：销毁创建的输入框组件<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	destroy : function(){
	    return this.getElement().filebox('destroy');
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.resize<br>
	 * 函数功能：重新设置组件的宽度<br>
	 * 参数输入：Width : 500<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	resize : function(sWidth){
	    return this.getElement().filebox('resize',sWidth);
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.disable<br>
	 * 函数功能：设置输入框为不可用输入框组件<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */ 
	disable : function(){
	    return this.getElement().filebox('disable');
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.enable<br>
	 * 函数功能：设置输入框为可用输入框组件<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	enable : function(){
	    return this.getElement().filebox('enable');
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.readonly<br>
	  * 函数功能：设置输入框为只读输入框组件<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	readonly : function(mode){
	    return this.getElement().filebox('readonly',mode);
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.clear<br>
	 * 函数功能：清空输入框中的内容<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	clear : function(){
	    return this.getElement().filebox('clear');
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.reset<br>
	 * 函数功能：重置输入框组件内容<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	reset : function(){
	    return this.getElement().filebox('reset');
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.initValue<br>
	 * 函数功能：初始化输入框组件中的内容<br>
	 * 参数输入：sValue  : string类型的字符串 <br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	initValue : function(sValue){
	    return this.getElement().filebox('initValue',sValue);
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.setText<br>
	 * 函数功能：设置输入框组件中的文本内容<br>
	 * 参数输入：sText ：string类型的字符串<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	setText : function(sText){
	    return this.getElement().filebox('setText',sText);
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.getText<br>
	 * 函数功能：获取输入框组件中的文本内容<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	  * 函数返回：返回组件输入框中的text值<br>
	 * 异常信息：无<br>
	 */
	getText : function(){
	    return this.getElement().filebox('getText');
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.setValue<br>
	 * 函数功能：设置组件的值<br>
	 * 参数输入：sValue : string 类型的字符串<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	setValue : function(sValue){
	    return this.getElement().filebox('setValue',sValue);
	},

	/**
	 * 函数名称：Rainier.UI.V2.UUICompositeFileBox.getValue<br>
	 * 函数功能：获取组件的值<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：返回组件的value值<br>
	 * 异常信息：无<br>
	 */
	getValue : function(sValue){
	    return this.getElement().filebox('getValue',sValue);
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.getIcon<br>
	 * 函数功能：获取组件的icon图标对象<br>
	 * 参数输入：nIndex : 5 数值类型<br>
	 * 参数输出：无<br>
	 * 函数返回：返回icon图标对象<br>
	 * 异常信息：无<br>
	 */
	getIcon : function(nIndex){
	    return this.getElement().filebox('getIcon',nIndex);
	},

	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.validate<br>
	 * 函数功能：对当前文本框组件进行校验<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：true/false : boolean类型<br>
	 * 异常信息：无<br>
	 */
	validate : function(){
	    return this.getElement().filebox('validate');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.isValid<br>
	 * 函数功能：检测当前输入框组件是否进行了校验<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：true/false : boolean 类型的值true 表示进行了校验，false表示当前组件未进行校验<br>
	 * 异常信息：无<br>
	 */
	isValid : function(){
	    return this.getElement().filebox('isValid');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.enableValidation<br>
	 * 函数功能：设置输入框组件为可校验输入框<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	enableValidation : function(){
	    return this.getElement().filebox('enableValidation');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.disableValidation<br>
	 * 函数功能：设置输入框组件为不可校验输入框<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	disableValidation : function(){
	    return this.getElement().filebox('disableValidation');
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.UICompositeFileBox.resetValidation<br>
	 * 函数功能：重新设置校验输入框组件<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
	resetValidation : function(){
	    return this.getElement().filebox('resetValidation');
	}
});